home *** CD-ROM | disk | FTP | other *** search
/ Chaos CD Blue / Chaos_CD_Blue__[1999].iso / congress / 1993 / cyber_dm / cbx_3d.txt < prev   
Text File  |  1998-04-27  |  7KB  |  180 lines

  1. Doku der internen Beschreibungs-Sprache für das Cyber-Box-Demo.
  2. Kontakt: Institut f. Kommunikation, Christophstr. 30, 50670 Köln
  3.          bvdb@sky.gun.de
  4.  
  5.  
  6. Kurzbeschreibung Visual-3D
  7.  
  8. Achtung! Dieses Demo läuft nur mit einem mathematischen Co-Prozessor.
  9.  
  10. allgemeine Struktur:
  11.  
  12. Visual-3D ist eine in C++ entwickelte Bibliothek zur Darstellung
  13. dreidimensionaler Szenerien. Alle Objekte und der
  14. Szenerie-Beobachter werden in Koordinatensystemen definiert, um
  15. die räumlichen Beziehungen zueinander transparent zu gestalten.
  16.  
  17. Das Programm kann mit einer Uhr synchronisiert werden, um
  18. Echtzeit-Anwendungen zu erlauben. Je nach Hardware können Szenen
  19. aus einigen hundert Vektoren mit mehr als zehn Bildern pro
  20. Sekunde dargestellt werden.
  21.  
  22. Die Funktionen der Bibliothek können in zwei Klassen unterteilt
  23. werden:
  24.  
  25. - Definition einer Szene
  26. - Darstellung einer Szene
  27.  
  28. Eine Szene kann entweder mit einer Script-Datei oder in einem
  29. externen Programm-Modul definiert werden. Die dazu benötigten
  30. Datentypen werden in den folgenden Abschnitten beschrieben. Die
  31. wiederholte Darstellung einer Szene ist vom Standpunkt des
  32. Benutzers trivial und besteht aus folgenden Schritten:
  33.  
  34. - Alle Objekt-Systeme ins Beobachter-System kopieren.
  35. - Das Beobachter-System auf dem Bildschirm darstellen.
  36. - Daten manipulieren (z.B. Bewegung des Beobachters durch Tastatureingabe)
  37.  
  38.  
  39. Koordinatensysteme:
  40.  
  41. Koordinatensysteme vermitteln die raümliche Beziehung zwischen
  42. den Objekten und dem Beobachter. Die relevanten Daten sind eine
  43. Rotationsmatrix, ein Translationsvektor und ein Zeiger auf das
  44. Koordinatensystem, worauf sich Rotation und Translation
  45. beziehen. Eine Szene besteht i.A. aus einer Hierarchie von
  46. Koordinatensystemen, z.B. Galaxie < Sonnensystem < Erde <
  47. Hamburg < Auto < Mensch < Kopf. Dieses Feature ist besonders
  48. nützlich, wenn sich die verschiedenen Systeme zueinander
  49. bewegen. Durch geschickten Aufbau einer Hierarchie von
  50. Koordinatensystemen können die Bewegungsgleichungen u. U.
  51. erheblich vereinfacht werden. Es gibt drei verschiedene Typen
  52. von Koordinatensysteme:
  53.  
  54. allgemeine Systeme:
  55. Definition: system name(rel, rot, trans)
  56. rel ist ein Zeiger auf das relative Koordinatensystem, rot die
  57. entsprechende Rotationsmatrix und trans der Translationsvektor.
  58. Allgemeine Systeme erhöhen die Flexibilität beim Aufbau der
  59. Hierarchie von Koordinatensystemen.
  60.  
  61. Objekt-System:
  62. Definition: o_system name(rel, rot, trans, P)
  63. Alle darzustellenden 3D-Objekte müssen sich in Objekt-Systemen
  64. befinden. Die Definition verläuft wie bei den allgemeinen
  65. Systemen. Der zusätzliche Parameter P ist eine Zeigerliste,
  66. deren Elemente auf die zum Objekt-System gehörenden 3D-Objekte
  67. zeigen.
  68.  
  69. Beobachter-System:
  70. Definition: v_system name(rel, rot, trans)
  71. Position und Blickwinkel des Szenerie-Beobachters werden durch
  72. Definition eines Beobachter-Systems realisiert. Die Definition
  73. verläuft wie bei den allgemeinen Systemen. Auf die Variablen
  74. rel, rot und trans des Beobachter-Systems greift in der Regel
  75. eine Tastatur- Maus- oder Joystick- Funktion zu, die dem
  76. Benutzer die Manipulation der Position und des Blickwinkels
  77. erlaubt.
  78.  
  79.  
  80. Datentypen:
  81.  
  82. Alle durch den Benutzer zu definierenden Daten werden von
  83. Visual-3D in Form von Zeigern verwandt. Die Definition der Daten
  84. wird entweder durch das Einlesen einer Script-Datei oder in
  85. einem externen Programm-Modul vorgenommen. Daher können die
  86. Daten durch externe Funktionen (Tastatur, Maus, Joystick,
  87. serielle Schnittstelle) oder externe Programm-Module
  88. (Flugsimulator, Planetarium, Kamerasteuerung) manipuliert
  89. werden. Folgende Datentypen werden verwandt:
  90.  
  91. vector:
  92. Definition: vector name(x,y,z)
  93. Vektoren bestehen aus drei reellen Komponenten (x, y, z) und
  94. werden zur Angabe von Positionen und Verschiebungen verwandt.
  95.  
  96. matrix:
  97. Definition: matrix name(euler(a,b,c))
  98. Matrizen bestehen aus neun reellen Komponenten und werden zur
  99. Angabe von linearen Transformationen (Drehungen, Skalierungen,
  100. ...) verwandt. Zur Berechnung der Matrizen stehen Funktionen
  101. bereit, die z.B. aus drei Euler-Winkeln die entsprechende
  102. Rotationsmatrix berechnet.
  103.  
  104. real:
  105. Definition: real name(x)
  106. reelle Zahlen werden zur Angabe von Kugelradien verwandt.
  107.  
  108. color:
  109. Definition: color name(i)
  110. color beschreibt die Farbe von Kugeln. Die Farbe wird durch
  111. einen Paletten-Index beschrieben.
  112.  
  113. color_array:
  114. Definition: color_array name(i1, i2, ..., in)
  115. Ein color-array ist eine Farb-Liste und beschreibt die Farbe von
  116. Linien und Dreiecken. Je nach räumlicher Lage zum Beobachter
  117. wird eine Farbe der Liste bei der Darstellung verwandt.
  118.  
  119.  
  120. 3D-Objekte:
  121. Definition: object name(type,V,D)
  122. 3D-Objekte sind die zentralen Datentypen dieser Bibliothek. Alle
  123. auf dem Bildschirm darstellbaren Objekte sind von diesem Typ.
  124. Bei der Definition sind die folgenden drei Parameter anzugeben:
  125. type ist einer der unten aufgezählten Grundtypen, welcher die
  126. Art des 3D-Objekts definiert (z.B. Linie, Pyramide, Auto, ...).
  127. V ist eine Zeiger-Liste, deren Elemente auf die zur Darstellung
  128. benötigten Vektoren (Eckpunkte von Polygonen, Mittelpunkte von
  129. Kugeln, ...) zeigen. D ist eine Zeiger-Liste, deren Elemente auf
  130. die übrigen Objekt-Daten zeigen (Farben,
  131. Transformationsparameter, Kugelradien, ...). V und D müssen
  132. einen zum verwendeten Grundtyp passenden Inhalt aufweisen.
  133.  
  134.  
  135. Grundtypen:
  136.  
  137. "sphere", V = (x,NULL), D = (r,c)
  138. beschreibt Kugel am Punkt x mit Radius r und Farbe c.
  139.  
  140. "line", V = (x1,x2,NULL), D = (c)
  141. beschreibt Linie vom zwischen den Punkten x1 und x2 mit
  142. Farb-Array c.
  143.  
  144. "triangle", V = (x1,x2,x3,NULL), D = (c1,c2)
  145. beschreibt ein Dreieck zwischen den Punkten x1, x2 und x3. Die
  146. Vorderseite wird durch das Farb-Array c1, die Rückseite durch c2
  147. dargestellt. Falls die Punkte x1, x2 und x3 im Uhrzeigersinn
  148. orientiert sind ist die Vorderseite sichtbar, sonst die
  149. Rückseite. Ist c1 oder c2 NULL, ist die entsprechende Seite
  150. unsichtbar (sinnvoll bei der Darstellung geschlossener Körper).
  151.  
  152. "transformation", V = (NULL), D = (obj, rot, trans)
  153. beschreibt eine um die Matrix rot gedrehte und um den Vektor
  154. trans verschobene Kopie des 3D-Objekts obj. Bei geschickter
  155. Verwendung dieses Typs kann die zur Darstellung einer Szene
  156. erforderliche Datenmenge u.U. erheblich reduziert werden.
  157.  
  158. "n_macro", V, D definierbar
  159. hiermit können eigene Typen definiert werden. Der neue Typ wird
  160. durch eine Liste bereits definierter Typen (oder vordefinierter
  161. Typen) mit Index-Listen auf V und D beschrieben. Das Format von
  162. V und D wird vom Benutzer definiert. Ein Quader besteht
  163. beispielsweise aus zwölf Dreiecken zwischen acht Eckpunkten und
  164. sechs Farb-Listen (zwei Dreiecke und eine Farb-Liste pro Seite).
  165. Also ist V = (x1,x2,...,x8,NULL), D = (c1,c2,c3,c4). Der Typ
  166. Quader besteht dann aus
  167. triangle((x1,x2,x3,NULL),(c1,NULL)),
  168. triangle((x1,x3,x4,NULL), (c1,NULL)),
  169. triangle((x3,x4,x5,NULL),(c2,NULL)), ...
  170. Selbstdefinierte Typen können zur Definition weiterer Typen
  171. verwandt werden.
  172.  
  173. "r_macro", V, D definierbar
  174. dieser Grundtype arbeitet wie der Typ n_macro, es wird jedoch
  175. nur ein Element der Typliste zu einer Zeit dargestellt. Welches
  176. Element dargestellt wird, hängt von der Entfernung des Objekts
  177. zum Beobachter ab. Mit diesem Grundtyp kann ein Objekt
  178. entfernungsabhängig in verschiedenen Auflösungen dargestellt
  179. werden.
  180.